"/usr/include/CC/sys/signal.h", line 38: warning: function name expected
This is because C++ doesn't understand the #pragma directives it encounters in some system header files, so it just passes them through to the C compiler. The warning message results because C++ eliminates or moves the C function declarations that the pragma references. Another problem is that the C++ header files use #define to temporarily rename system functions when they include the vendor's C header files as a way to hide the effects of the vendor's C declarations for these functions. Unfortunately, this garbles the function names in the #pragma directives also.
Under R2.0, the #pragma problem just results in warning messages, but under R2.1, the C compilation occasionally fails with an error message. We manually made a new, self-contained version of /usr/include/CC/setjmp.h with the following pragma at the end:
/*
* Routines that call setjmp have strange control flow graphs,
* since a call to a routine that calls resume/longjmp will eventually
* return at the setjmp site, not the original call site. This
* utterly wrecks control flow analysis.
*/
#pragma unknown_control_flow(sigsetjmp, setjmp, _setjmp)
This eliminates the error messages, but not the warning messages. It would probably be no worse to simply remove the #pragmas altogether, since they don't seem to be having the intended effect, and that would eliminate the warning messages also.